package rlyy.framework.core.resolver.argument;

import rlyy.framework.core.common.request.FullRequest;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;

import java.lang.reflect.Parameter;

/**
 *
 * 参数解析接口
 * 需要自定义参数解析 实现此接口 添加到初始化参数解析集合中InitParameterParser.RESOLVERS
 * @author yuanqinglong
 * @since 2020/7/20 10:33
 */
@Component
public interface MyHandlerMethodArgumentResolver extends Ordered {

    /**
     * 判断该解析器是否支持parameter参数的解析
     * @param parameter 方法参数
     * @return 是否进行解析
     */
    boolean supportsParameter(Parameter parameter);

    /**
     * 解析参数
     * @param parameter 方法参数
     * @param fullRequest 参数
     * @return 。
     * @throws Exception 解析异常
     */
    Object resolveArgument(Parameter parameter, FullRequest fullRequest) throws Exception;
}
